package com.sisgesbyte.web.managedBean.ventas;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

import javax.annotation.PostConstruct;
import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;
import javax.servlet.http.HttpSession;

import com.sisgesbyte.common.ConstantesInternasSistema;
import com.sisgesbyte.services.ventas.ConsultaVentasService;
import com.sisgesbyte.services.ventas.MantenimientoPeriodo;
import com.sisgesbyte.services.ventas.bean.FiltroVentasFO;
import com.sisgesbyte.services.ventas.bean.ListaVentasResponse;
import com.sisgesbyte.services.ventas.bean.PeriodoBean;
import com.sisgesbyte.services.ventas.bean.PeriodoListaBean;
import com.sisgesbyte.services.ventas.bean.VentasBean;

@ManagedBean
@ViewScoped
public class ConsultaVentasMBean implements Serializable{

	private static final long serialVersionUID = 1L;
	
	@EJB
	private ConsultaVentasService consultaVentasService;
	@EJB
	private MantenimientoPeriodo mantenimientoPeriodo;
	
	private Integer periodoDefault;
	private List<PeriodoBean> listaPeriodos;
	private List<VentasBean> listaVentas;
	private String txtBuscar;
	
	@PostConstruct
	private void init() {
		txtBuscar="";
		cargarPeriodos();
		mostrarPeriodoDefault();
	}
	
	public void inicializar(){
		try{
			FiltroVentasFO filtroBean = new FiltroVentasFO();
			filtroBean.setPeriodoId(periodoDefault);
			filtroBean.setIdFfvv(0);
			filtroBean.setTxtBuscar(txtBuscar);
			System.out.println("Ingresa");
			ListaVentasResponse response = consultaVentasService.listaVentas(ObtenerIdTransaccion(), filtroBean);
			System.out.println("Sale");
			System.out.println("Respuesta : " + response.getCodigoRespuesta());
			if(response.getCodigoRespuesta().equalsIgnoreCase(ConstantesInternasSistema.CODIGO_EXITO)){
				listaVentas = response.getListaVentas();
			}else{
				listaVentas = new ArrayList<VentasBean>();
			}
		}catch(Exception e){
			System.out.println("Error al obtener las ventas " + e);
			listaVentas = new ArrayList<VentasBean>();
		}
	}
	public void cargarPeriodos() {
		try {
			PeriodoListaBean periodos = mantenimientoPeriodo
					.listaPeriodos(ObtenerIdTransaccion());
			this.listaPeriodos = periodos.getListaPeriodos();
		} catch (Exception e) {
			System.out.println("Error al cargar los periodos: " + e);
		}
	}

	public void mostrarPeriodoDefault() {
		for (PeriodoBean ls : getListaPeriodos()) {
			if (ls.getDefecto() != null && ls.getDefecto() == true) {
				setPeriodoDefault(ls.getId());
			}
		}
	}
	public String ObtenerIdTransaccion() {
		FacesContext fCtx = FacesContext.getCurrentInstance();
		HttpSession session = (HttpSession) fCtx.getExternalContext()
				.getSession(false);
		String sessionId = session.getId().replace(".undefined", "");
		return sessionId;
	}

	public Integer getPeriodoDefault() {
		return periodoDefault;
	}

	public void setPeriodoDefault(Integer periodoDefault) {
		this.periodoDefault = periodoDefault;
	}

	public List<PeriodoBean> getListaPeriodos() {
		return listaPeriodos;
	}

	public void setListaPeriodos(List<PeriodoBean> listaPeriodos) {
		this.listaPeriodos = listaPeriodos;
	}

	public String getTxtBuscar() {
		return txtBuscar;
	}

	public void setTxtBuscar(String txtBuscar) {
		this.txtBuscar = txtBuscar;
	}

	public List<VentasBean> getListaVentas() {
		return listaVentas;
	}

	public void setListaVentas(List<VentasBean> listaVentas) {
		this.listaVentas = listaVentas;
	}

}
